/**
 * 
 */
package com.puzzlebazar.client.main.control;

public interface PuzzleTokenFactory {
	
	/**
	 * Creates an history token that can be used to display information about a puzzle
	 * 
	 * @param puzzleInfoKey The key of the puzzle for which to fetch information
	 * @return The browser history token
	 */
	String getPuzzleInfoToken( String puzzleInfoKey );

	/**
	 * Creates an history token that can be used to display information about a tutorial
	 * 
	 * @param puzzleInfoKey The puzzle key of the tutorial for which to fetch information
	 * @return The browser history token
	 */
	String getTutorialInfoToken( String puzzleInfoKey );

	/**
	 * Creates an history token that can be used to load and edit an existing puzzle 
	 * 
	 * @param puzzleInfoKey The key of the puzzle to load for edition
	 * @return The browser history token
	 */
	String getEditPuzzleToken( String puzzleInfoKey );
	
	/**
	 * Creates an history token that can be used to load and play an existing puzzle 
	 * 
	 * @param puzzleInfoKey The key of the puzzle to load for playing
	 * @return The browser history token
	 */
	String getPlayPuzzleToken( String puzzleInfoKey );


	/**
	 * Creates a browser history token that can be used to view an existing history
	 * 
	 * @param historyInfoKey The key of the history to load for viewing
	 * @return The browser history token
	 */
	String getViewHistoryToken( String historyInfoKey );

	/**
	 * Creates a browser history token that can be used to continue an existing history
	 * 
	 * @param historyInfoKey The key of the history to load and continue
	 * @return The browser history token
	 */
	String getContinueHistoryToken( String historyInfoKey );

	/**
	 * Creates an history token that can be used to view a tutorial
	 * 
	 * @param historyInfoKey The key of the history  attached to the tutorial to view
	 * @return The browser history token
	 */
	String getViewTutorialToken(String historyInfoKey);	
	

	/**
	 * Creates an history token that can be used to edit a tutorial
	 * 
	 * @param historyInfoKey The key of the history attached to the tutorial to edit
	 * @return The browser history token
	 */
	String getEditTutorialToken(String historyInfoKey);	
	
}